package com.muyu.payment.service;

import java.util.List;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.payment.domain.PaymentDict;
import com.muyu.payment.domain.PaymentOrder;
import com.muyu.payment.domain.model.PaymentOrderQueryModel;
import com.muyu.payment.domain.model.PaymentOrderPageQueryModel;
import com.muyu.payment.domain.model.PaymentOrderSaveModel;
import com.muyu.payment.domain.model.PaymentOrderEditModel;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 支付订单Service接口
 *
 * @author muyu
 * @date 2025-09-16
 */
public interface PaymentOrderService extends IService<PaymentOrder> {


    /**
     * 若订单为待支付(1)，则更新为已支付(2)，写入三方交易号、支付渠道与支付类型。
     * 返回是否成功从待支付更新为已支付（幂等）。
     */
    public boolean markPaidIfPending(String orderNo, String thirdTradeNo, String payChannel, Long payType);

    /** 订单是否已支付。 */
    public boolean isPaid(String orderNo);
    /**
     * 查询支付订单列表
     *
     * @param pageQueryModel 支付订单
     * @return 支付订单集合
     */
    public PageQueryModel<PaymentOrderPageQueryModel> pageQuery(PaymentOrderQueryModel pageQueryModel);

    /**
     * 查询支付订单列表
     *
     * @param pageQueryModel 支付订单
     * @return 支付订单集合
     */
    public List<PaymentOrder> exportList(PaymentOrder pageQueryModel);


    /**
     * 支付订单添加
     *
     * @param saveModel 支付订单添加模型
     * @return 支付订单集合
     */
    public void save(PaymentOrderSaveModel saveModel);

    /**
     * 支付订单添加
     *
     * @param editModel 支付订单修改模型
     * @return 支付订单集合
     */
    public void edit(PaymentOrderEditModel editModel);

    /**
     * 字典表数据
     * @param dictType
     * @return
     */
     public List<PaymentDict> dict(String dictType);

    /**
     * 根据订单号查询支付订单
     * @param orderNo 订单号
     * @return 支付订单
     */
    PaymentOrder getByOrderNo(String orderNo);



}
